from django.utils.safestring import mark_safe
from django.contrib import admin
from .models import *

admin.site.site_header = '电商管理系统'  # 此处设置页面显示标题
admin.site.site_title = '电商管理系统'  # 此处设置页面头部标题

@admin.register(MallCarousel)
class MallCarouselAdmin(admin.ModelAdmin):
    # list_display这个属性即使用于定义人员列表页显示哪些字段，列表页中的值，必须和model类中声明的字段保持一致。
    list_display = ['carousel_id', 'carousel_url', 'redirect_url', 'carousel_rand', 'is_deleted']
    list_display_links = ('carousel_url',)
    # 这个fields字段作用域model的添加页面，显示哪些字段可以用于输入内容，不在列表中的数据，默认添加页面就不在显示了。
    # fields = ['p_name']
    # fields属性和fieldsets属性不能同时使用。因为都作用于添加页面。
    fieldsets = [
        ('图片URL', {'fields': ['carousel_url']}),
        ('跳转URL', {'fields': ['redirect_url']}),
        ('排序', {'fields': ['carousel_rand']}),
        ('是否删除', {'fields': ['is_deleted']}),
    ]
    # 针对人员列表页的一个属性配置，在列表页的右侧会出现一个过滤器，可以根据人员的年龄和性别对列表页的人员进行筛选。
    # list_filter = ['carousel_url', 'carousel_rand']
    ##在人员的列表页顶部会出现一个搜索框。只能根据search_fields内部定义的字段值进行搜索。
    search_fields = ['carousel_url']

    # list_per_page设置每页显示多少条记录，默认是100条
    list_per_page = 10
    # ordering设置默认排序字段，负号表示降序排序
    ordering = ('carousel_id',)
    # list_editable 设置默认可编辑字段
    list_editable = ['redirect_url', 'carousel_rand', 'is_deleted']
    # fk_fields 设置显示外键字段
    # fk_fields = ('XXX_id',)
@admin.register(MallCart)
class MallCartAdmin(admin.ModelAdmin):
    # list_display这个属性即使用于定义人员列表页显示哪些字段，列表页中的值，必须和model类中声明的字段保持一致。
    list_display = ['cart_item_id', 'user', 'goods', 'goods_count', 'is_deleted', 'create_time', 'update_time']
    list_display_links = ('user',)
    # 这个fields字段作用域model的添加页面，显示哪些字段可以用于输入内容，不在列表中的数据，默认添加页面就不在显示了。
    # fields = ['p_name']
    # fields属性和fieldsets属性不能同时使用。因为都作用于添加页面。
    # fieldsets = [
    #     ('图片URL', {'fields': ['carousel_url']}),
    #     ('跳转URL', {'fields': ['redirect_url']}),
    #     ('排序', {'fields': ['carousel_rand']}),
    #     ('是否删除', {'fields': ['is_deleted']}),
    # ]
    # 针对人员列表页的一个属性配置，在列表页的右侧会出现一个过滤器，可以根据人员的年龄和性别对列表页的人员进行筛选。
    list_filter = ['user', 'goods']
    ##在人员的列表页顶部会出现一个搜索框。只能根据search_fields内部定义的字段值进行搜索。
    # search_fields = ['carousel_url']

    # list_per_page设置每页显示多少条记录，默认是100条
    list_per_page = 10
    # ordering设置默认排序字段，负号表示降序排序
    ordering = ('cart_item_id',)
    # list_editable 设置默认可编辑字段
    # list_editable = ['redirect_url', 'carousel_rand', 'is_deleted']
    # fk_fields 设置显示外键字段
    fk_fields = ('user', 'goods')
@admin.register(MallComment)
class MallCommentAdmin(admin.ModelAdmin):
    # list_display这个属性即使用于定义人员列表页显示哪些字段，列表页中的值，必须和model类中声明的字段保持一致。
    list_display = ['comment_id', 'goods', 'user', 'comment', 'create_time']
    list_display_links = ('comment',)
    list_per_page = 10
    ordering = ('comment_id',)

@admin.register(MallGoodsCategory)
class MallGoodsCategoryAdmin(admin.ModelAdmin):
    # list_display这个属性即使用于定义人员列表页显示哪些字段，列表页中的值，必须和model类中声明的字段保持一致。
    list_display = ['category_id', 'category_level', 'parent_id', 'category_name', 'category_rank', 'is_deleted', 'create_user', 'create_time', 'update_user', 'update_time']
    list_display_links = ('category_name',)
    list_per_page = 10
    list_filter = ['category_level', 'parent_id']
    ordering = ('category_id',)

@admin.register(MallGoodsInfo)
class MallGoodsInfoAdmin(admin.ModelAdmin):
    # list_display这个属性即使用于定义人员列表页显示哪些字段，列表页中的值，必须和model类中声明的字段保持一致。
    list_display = ['goods_id', 'goods_name', 'goods_intro', 'goods_category_id', 'goods_cover_img', 'goods_carousel', 'goods_detail_content', 'original_price', 'selling_price', 'stock_num', 'tag', 'goods_sell_status', 'create_user', 'create_time', 'update_user', 'update_time']
    list_display_links = ('goods_name',)
    list_per_page = 10
    list_filter = ['goods_sell_status']
    search_fields = ['goods_name']
    ordering = ('goods_id',)


@admin.register(MallIndexConfig)
class MallIndexConfigAdmin(admin.ModelAdmin):
    # list_display这个属性即使用于定义人员列表页显示哪些字段，列表页中的值，必须和model类中声明的字段保持一致。
    list_display = ['config_id', 'config_name', 'config_type', 'goods_id', 'redirect_url', 'config_rank', 'is_deleted','create_user', 'create_time', 'update_user', 'update_time']
    list_display_links = ('config_name',)
    list_per_page = 10
    ordering = ('config_id',)
    list_filter = ['config_type', 'is_deleted']

@admin.register(MallOrder)
class MallOrderAdmin(admin.ModelAdmin):
    list_display = ['order_id', 'order_no', 'user_id', 'total_parice', 'pay_status', 'pay_type', 'pay_time','order_status', 'extra_info', 'is_deleted', 'create_time', 'update_time']
    list_display_links = ('order_no',)
    list_per_page = 10
    list_filter = ['user_id', 'pay_status', 'pay_type']
    search_fields = ['order_no']
    ordering = ('order_id',)

@admin.register(MallUser)
class MallUserAdmin(admin.ModelAdmin):
    list_display = ['user_id', 'login_name', 'user_pwd', 'nick_name', 'locked', 'introduce', 'is_deleted','create_time']
    list_display_links = ('login_name',)
    list_per_page = 10
    list_filter = ['locked',]
    search_fields = ['login_name']
    ordering = ('user_id',)


@admin.register(OrderAddress)
class OrderAddressAdmin(admin.ModelAdmin):
    list_display = ['order', 'user_name', 'user_phone', 'province_name', 'city_name', 'region_name', 'detail_address']
    list_display_links = ('user_name',)
    list_per_page = 10
    ordering = ('order',)

@admin.register(OrderItem)
class OrderItemAdmin(admin.ModelAdmin):
    list_display = ['order', 'goods_name', 'goods_cover_img', 'selling_price', 'goods_count', 'create_time']
    list_display_links = ('goods_name',)
    list_per_page = 10
    search_fields = ['order']
    ordering = ('order',)

@admin.register(UserAddress)
class UserAddressAdmin(admin.ModelAdmin):
    list_display = ['address_id', 'user', 'user_name', 'user_phone', 'default_flag', 'province_name', 'city_name', 'region_name', 'detail_address', 'create_time', 'update_time']
    list_display_links = ('user_name',)
    list_per_page = 10
    ordering = ('address_id',)
# admin.site.register(MallCarousel, MallCarouselAdmin)  # 将数据模型和后台管理模块进行注册绑定